import java.util.Scanner;
import java.util.Arrays;
public class Main {
    /*给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2，另有两个整数 m 和 n ，
    分别表示 nums1 和 nums2 中的元素数目。
    请你 合并 nums2 到 nums1 中，使合并后的数组同样按 非递减顺序 排列。
    注意：最终，合并后数组不应由函数返回，而是存储在数组 nums1 中。
    为了应对这种情况，nums1 的初始长度为 m + n，其中前 m 个元素表示应合并的元素，
    后 n 个元素为 0 ，应忽略。nums2 的长度为 n 。*/
    public static void merge(int[] nums1, int[] nums2, int n,int m) {
         int i=n-1;
         int j=m-1;
         int k=n+m-1;
         while(i>=0&&j>=0) {
             if (nums1[i] > nums2[j]) {
                 nums1[k--] = nums1[i--];
             } else {
                 nums1[k--] = nums2[j--];
             }
         }
         System.arraycopy(nums2,0,nums1,0,j+1);
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a=sc.nextInt();
        int[] nums1=new int[a];
        for(int i=0;i<a;i++){
            nums1[i]=sc.nextInt();
        }
        int b=sc.nextInt();
        int[] nums2=new int[b];
        for(int i=0;i<b;i++){
            nums2[i]=sc.nextInt();
        }
        int n=sc.nextInt();
        int m=sc.nextInt();
        merge(nums1,nums2,n,m);
        System.out.println(Arrays.toString(nums1));
    }
}
